Google Cloud Shellのプロジェクトをpecoで変更する
はじめに
データアナリティクス事業本部のはんざわです。
みなさんはCloud Shellを使っていますか?
Cloud Shellは、ブラウザから場所を問わずにアクセスできる、オンラインの開発および運用環境です。gcloudコマンドラインツールやkubectlなどのユーティリティがプリロードされたオンラインターミナルを使用して、リソースを管理できます。
※ 公式ドキュメントより引用
自分はCloud Shellを多用しています。 gcloudコマンドでサービスのデプロイや管理をしたり、Terraformで使ったりしています。
自分の場合、検証や本番に加えて、会社の自分の環境やチームの環境などたくさんのプロジェクトがあります。
それぞれのプロジェクトに切り替えるたびにgcloud config set project PROJECT_ID
を入力するのは非常に手間です。
自分はオープンソースサービスであるpecoを使用し、簡単に切り替えられるようにしているのでその方法を紹介したいと思います。
pecoとは
pecoはインタラクティブフィルターツールの一種で似たものにfzfがあります。
インタラクティブフィルターツールとは、ユーザーが与えた標準入力を受け取り、その中から選択したものを標準出力として出力します。
例として、ls | peco
のようにpecoコマンドをパイプで渡すとこのような画面に変わります。
この中から選んだものが出力されます。
main.pyを選択し、出力されました。
Cloud Shellにpecoをインストールする
以下の手順でCloud Shellにpecoをインストールしました。
mkdir ~/bin cd ~/bin # https://github.com/peco/peco/releases このURLから最新版のバージョンを見つけてください sudo wget https://github.com/peco/peco/releases/download/v0.5.10/peco_linux_amd64.tar.gz sudo tar xzvf peco_linux_amd64.tar.gz sudo rm -f peco_linux_amd64.tar.gz cd peco_linux_amd64 sudo chmod +x peco mv ./peco ../ sudo rm -rf peco_linux_amd64/
インストールした後に再度CloudShellに繋ぎ直して、pecoと実行し、Error: failed to setup input source: you must supply something to work with via filename or stdin
とエラーを吐けばインストール成功です。
注意点
Cloud Shellは$HOME配下のみ永続ディスクストレージの扱いになっています。そのため一定時間経過するとそれ以外のディレクトリはリセットされてしまいます。そのため今回のようにホームディレクトリ配下にbinを作成し、その中にインストールしています。 また、5GBまでの制限があるのでその点も注意が必要です。
pecoでGoogle Cloudのプロジェクトを切り替える
早速ですがコードは以下のようになっており、bashrcファイルに記載してあります。
function gpr { project=$(gcloud projects list | grep "PROJECT_ID" | awk -F " " '{ print $2 }' | peco) gcloud config set project ${project} }
gprという名前で関数を登録しています。 コマンドラインからgprと入力すればプロジェクトの選択&切り替えができます。
まとめ
Cloud Shellでプロジェクトを簡単に切り替える方法を紹介しました。 このやり方は他のことにも応用できると思うので是非試してみてください。 将来的にはfzfに変更してみたり、configurationsも試してみたいと思っています。